﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            //            第一题：
            //一个考试管理系统，需要录入考生成绩，只能录入数字，否则会报类型转换异常。
            //请编写相关代码，
            //1、捕获FormatException异常，并打印输出“异常已处理；
            //2、捕获OverflowException异常，数值超出float范围的异常，并打印输出“异常已处理；
            //3、捕获一般异常Exception异常。
            //4、最终处理finally
            //录入成绩结束后，请输出，总学生数，总分数，平均分。
            //try
            //{
            //    float sum = 0;
            //    float[] arr = new float[10];
            //    for (int i = 0; i < arr.Length; i++)
            //    {
            //        Console.WriteLine("输入第{0}位考生的成绩：",i+1);
            //        float score = float.Parse(Console.ReadLine());
            //        arr[i] = score;
            //        sum = sum + arr[i];
            //        Console.WriteLine("总学生数为{0}，总分数为{1}，平均分为{2}",i+1,sum,(sum/ (i + 1)));
            //    }
            //}
            //catch (FormatException)
            //{
            //    Console.WriteLine("异常已处理");
            //}
            //catch (OverflowException)
            //{
            //    Console.WriteLine("异常已处理");
            //}

            //catch (Exception)
            //{
            //    Console.WriteLine("异常已处理");
            //}
            //finally
            //{
            //    Console.WriteLine("从头再来");
            //}

            //_______________________________________________________________

            //第二题：

            //编写一个程序，用以接收用户输入的两个浮点型的数值，一个值表示用户想要存放在银行账户中的余额，另一个值表示用户想要从银行账户中提取的金额。
            //实现存取款功能，
            //用户功能选择：1、存款，2、取款
            //取款时：
            //当用户想要提取的金额大于余额时，请手动抛出一个ArgumentOutOfRangeException 参数超出范围的异常，异常信息可以写“取款金额大于余额，请重新输入”
            //，如此以确保取款金额始终不大于当前余额。
            //操作结束，打印输出余额是多少。
            //最后再添加catch一般异常 Exception，使得数据类型转换的异常也能被捕获到。

            try
            {
                double money = 100.00;
            start:
                Console.WriteLine("用户功能选择：1、存款，2、取款");
                int key = int.Parse(Console.ReadLine());
                switch (key)
                {
                    case 1:
                        Console.WriteLine("输入存入的金额：");
                        double a = double.Parse(Console.ReadLine());
                        money = money + a;
                        Console.WriteLine("您的账户余额：{0}", money);
                        goto start;
                    case 2:
                        Console.WriteLine("输入取出的金额：");
                        double b = double.Parse(Console.ReadLine());
                        money = money - b;
                        if (money < 0)
                        {
                            throw new ArgumentOutOfRangeException("取款金额大于余额，请重新输入");
                        }
                        else
                        {
                            Console.WriteLine("您的账户余额：{0}", money);
                        }

                        goto start;
                    default:
                        break;
                }
            }
            catch(ArgumentOutOfRangeException)
            {
                Console.WriteLine("取款金额大于余额，请重新输入");
            }
            catch (Exception)
            {
                Console.WriteLine("一般异常");
            }





            Console.ReadKey();
        }
    }
}
